#ifndef __CC_TYPE_H__
#define __CC_TYPE_H__

// #include "../cc_config.h"  	
#include "../config.h" 

/* 基本数据类型定义 */
typedef int (*CmpRule_t)(void* InPara,void* b);
typedef int (*StdFilter_t)(uint32_t PkgLen,uint8_t* pPkg);

typedef uint32_t tMs; //typeTimeMs
typedef uint32_t tId; //typeTimeMs
typedef uint32_t tSz; //typeSize   
typedef uint32_t tFg; //typeFlag  

#if 0
typedef uint32_t tPtrVal;  
#else
typedef uint64_t tPtrVal;  
#endif

// 因为常用 所以提升到此;
typedef struct CC_DLink_Node tDLNode;
struct CC_DLink_Node{
    struct CC_DLink_Node* pPrev; //前
    struct CC_DLink_Node* pNext; //后
};

// 
typedef struct CC_General_PacketData tGPkg;
struct CC_General_PacketData{
    tSz Len;
    uint8_t* pBuf;
};


#define TYPE_MS_MAX_VAL 0xFFFFFFFF

/* 宏 值定义 */
#ifndef PUB_NULL 
#define PUB_NULL (0)
#endif

#ifndef NULL
#define NULL (0)
#endif

// Return num define
#define RET_OK 			0 
#define RET_ERR 		1
#define RET_NULL		2 	// 代表无效
#define RET_DONE		3 	// 完成
#define RET_WAIT		4 	// 
#define RET_BUSY		5 	// 

// 
#define RET_OT 			1	// OutTime 		超时
#define RET_NT 			0	// Not OutTime 	未超时

#define RET_EQ 			0	// equal to
#define RET_GT 			1	// Greater than
#define RET_LT 			2	// less than

#ifndef CMP_OK
#define CMP_OK 			1	// 
#endif

#ifndef CMP_ERR
#define CMP_ERR 		0	//
#endif

#define CC_UNLOCK   	0
#define CC_LOCK     	1

/* 宏 API */
#define CC_DIM(A) (sizeof(A)/sizeof((A)[0]))

#define CHK_MASK(VAL,BITMAP) 	((VAL&BITMAP)==BITMAP)
#define CLEAR_MASK(VAL,BITMAP) 	(VAL)=((VAL)&(~BITMAP));
#define SET_MASK(VAL,BITMAP) 	(VAL)|=(BITMAP);

// #define VAL_ABS do{(A)=(A)<0?(0-(A)):(A);}while(0);
// #define LOOP_ADD(A,LIM) do{A=(A)<(LIM-1)?(++(A)):0;}while(0);
// #define LOOP_SUB(A,LIM) do{A=(A)==0?(LIM-1):(--(A));}while(0);


#endif



